package com.decent.ejfadmin.collectcard.service;

import com.decent.ejfadmin.collectcard.entity.ManualClearing;
import com.decent.ejfadmin.collectcard.entity.SupplyCardQueryBean;
import com.decent.ejfadmin.common.bean.MessageBean;
import com.decent.ejfadmin.common.bean.Page;
import com.decent.ejfadmin.common.bean.SupplyCard;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

/**
 * @author weicx
 * @date 2018/07/17
 */
public interface CollectCardDetailService {
    /**
     * 收卡明细查询
     *
     * @param pageUnit    分页组件
     * @param ids         会员id
     * @param cardNumber  卡号
     * @param batchId     批次号
     * @param face        面值
     * @param status      状态
     * @param productType 运营商
     * @param startTime   查询开始时间
     * @param endTime     查询结束时间
     * @param timeType    时间类型 0入库时间 1销卡时间
     * @return MemberMessage
     */
    @SuppressWarnings({"AliMissingOverrideAnnotation", "JavadocReference"})
    Page queryReceiveList(SupplyCardQueryBean supplyCardQueryBean, Page page) throws Exception;

    /**
     * 处理预判面值不符订单
     *
     * @param ids
     * @param batchIds
     * @param operate   操作: 2或空:失败,1:再次提交
     * @param remark
     * @return
     */
    int setFail(String ids, String batchIds, Integer operate, String remark);

    /**
     * 收卡明细查询同步功能
     *
     * @param ids ID
     * @return
     */
    int synchronousCard(String ids);

    /**
     * 收卡记录列表导出
     *
     * @param response
     * @param writer
     * @param card
     * @return MemberMessage
     */
    void downLoad(HttpServletResponse response, ServletOutputStream writer, SupplyCardQueryBean card) throws Exception;

    /**
     * 停止/开启电信预判异常直接走试充
     *
     * @param status 1:直接走试充  0:异常n次走试充
     * @return
     */
    MessageBean changeTelecomJudge(Integer status);

    /**
     * 查询电信预判异常直接走试充 true 直接走试充
     *
     * @return
     */
    boolean getTelecomJudge();

    /**
     * 订单异步
     *
     * @param orderId 会员id
     * @return
     */
    MessageBean orderAsyn(String orderId);

    /**
     * 权益订单置失败
     *
     * @param ids    订单id
     * @param remark 备注
     * @return
     */
    MessageBean equitySetFail(Long[] ids, String remark);

    /**
     * 权益订单成功置失败
     *
     * @param ids    订单id
     * @param remark 备注
     * @return
     */
    MessageBean equitySuccessToFail(String[] ids, String remark);

    /**
     * 权益订单置成功
     *
     * @param ids 订单id
     * @return
     */
    MessageBean equitySetSuccess(String[] ids);


    /**
     * 设置备注
     *
     * @param id
     * @param remark
     * @param remarkType
     * @return
     * @throws Exception
     */
    MessageBean setRemark(Long id, String remark, String remarkType) throws Exception;

    /**
     * 权益手动补结算
     *
     * @param manualClearing
     * @return
     */
    MessageBean manualClearing(ManualClearing manualClearing);

    /**
     * 权益批次再次提交
     *
     * @param ids
     * @param productType
     * @return
     */
    MessageBean equityBatchResubmission(String[] ids, Integer productType);
}

